

#Область ОписаниеПеременных

#КонецОбласти

#Область ОбработчикиСобытийФормы

// Код процедур и функций


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ДвоичныеДанные = Неопределено;
	Если Параметры.Свойство("ХранилищеКонтейнераЗначения") Тогда
		ВозвратХранилищаДляКонтейнераЗначения = Истина;
		//@skip-check unknown-form-parameter-access
		ХранилищеКонтейнтейнера = Параметры.ХранилищеКонтейнераЗначения;//см. УИ_ОбщегоНазначенияКлиентСервер.НовыйХранилищеЗначенияТипаДвоичныеДанные
		
		Если ХранилищеКонтейнтейнера <> Неопределено Тогда
			ДвоичныеДанные = УИ_ОбщегоНазначения.ЗначениеИзХранилищаКонтейнераДвоичныхДанных(ХранилищеКонтейнтейнера);
		КонецЕсли;
	КонецЕсли;
	
	Если ДвоичныеДанные <> Неопределено Тогда
		АдресДвоичныхДанных = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
	КонецЕсли;
	
	ЗаполнитьВспомогательныеДанныеПоДвоичнымДанным(ДвоичныеДанные);
КонецПроцедуры



#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Применить(Команда)
	Закрыть(ВозвращаемоеЗначение());
КонецПроцедуры


&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
	ПараметрыЧтенияФайла = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыЧтенияФайла(УникальныйИдентификатор);
	ПараметрыЧтенияФайла.ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗагрузитьИзФайлаЗаврешениеПомещенияВоВременноеХранилище",
		ЭтотОбъект);
	
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогВыбораФайла.Заголовок = "Выбор файла";
	ДиалогВыбораФайла.МножественныйВыбор = Ложь;
	ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина;
	ПараметрыЧтенияФайла.ДиалогВыбораФайла = ДиалогВыбораФайла;

	УИ_ОбщегоНазначенияКлиент.НачатьЧтениеФайла(ПараметрыЧтенияФайла);
КонецПроцедуры

&НаКлиенте
Процедура СохранитьВФайл(Команда)
	ПараметрыСохранения = УИ_ОбщегоНазначенияКлиент.НовыйПараметрыСохраненияФайла();
	ПараметрыСохранения.АдресФайлаВоВременномХранилище = АдресДвоичныхДанных;
	
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	ДиалогВыбораФайла.Заголовок = "Сохранение файла";
	ДиалогВыбораФайла.МножественныйВыбор = Ложь;
	ПараметрыСохранения.ДиалогВыбораФайла = ДиалогВыбораФайла;
	
	УИ_ОбщегоНазначенияКлиент.НачатьСохранениеФайла(ПараметрыСохранения);
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Функция ВозвращаемоеЗначение()
	ДвоичныеДанные = Неопределено;
	Если ЭтоАдресВременногоХранилища(АдресДвоичныхДанных) Тогда
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресДвоичныхДанных);
	КонецЕсли;

	Возврат УИ_ОбщегоНазначения.ЗначениеХранилищаКонтейнераДвочныхДанных(ДвоичныеДанные);
КонецФункции

&НаКлиенте
Процедура ЗагрузитьИзФайлаЗаврешениеПомещенияВоВременноеХранилище(МассивФайлов, ДополнительныеПараметры) Экспорт
	Если МассивФайлов = Неопределено Тогда
		Возврат;
	КонецЕсли;
	Если МассивФайлов.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	УстановитьДанныеФормыПоПрочитанномуФайлу(МассивФайлов[0]);
КонецПроцедуры

&НаСервере
Процедура УстановитьДанныеФормыПоПрочитанномуФайлу(ПрочитанныйФайл)
	АдресДвоичныхДанных = ПрочитанныйФайл.Хранение;
	
	ДвоичныеДанные= ПолучитьИзВременногоХранилища(АдресДвоичныхДанных);
	ЗаполнитьВспомогательныеДанныеПоДвоичнымДанным(ДвоичныеДанные);
КонецПроцедуры

// Заполнить вспомогательные данные по двоичным данным.
// 
// Параметры:
//  ДвоичныеДанные - Неопределено, ДвоичныеДанные -  Двоичные данные
&НаСервере
Процедура ЗаполнитьВспомогательныеДанныеПоДвоичнымДанным(ДвоичныеДанные)
	Представление = ДвоичныеДанные;
	Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
		Размер = ДвоичныеДанные.Размер();
	Иначе
		Размер = 0;
	КонецЕсли;	
КонецПроцедуры

#КонецОбласти
